function [j_max_mf_value, j_max_mf_index] = exh_apeo_gpu_fft(n, min_peak, x_all_matrix, y_all_matrix)
    % 将输入数据传输到 GPU
    x_all_matrix_gpu = gpuArray(x_all_matrix);
    y_all_matrix_gpu = gpuArray(y_all_matrix);

    % 计算 FFT，只需要计算一次 FFT
    X_FFTs = fft(2 * single(x_all_matrix_gpu) - 1, 2 * n - 1, 2); % 对 X 全部矩阵进行 FFT
    Y_FFTs = fft(2 * single(y_all_matrix_gpu) - 1, 2 * n - 1, 2); % 对 Y 全部矩阵进行 FFT

    % 获取 y_all_matrix 的长度
    y_len = size(y_all_matrix_gpu, 1);

    % 使用 arrayfun 进行并行计算

end

function [mfs_value, mfs_index] = compute_max_mfs_limit(n, Y_FFTs_j, X_FFTs, x_all_matrix_gpu, y_seq, min_peak)
    % 计算相关性矩阵
    x_len = size(X_FFTs, 1);
    mfs = gpuArray.zeros(x_len, 1, 'single'); % 使用 GPU 数组
    correlation_results = gpuArray.zeros(x_len, 2 * n - 1, 'single'); % 使用 GPU 数组

    % 计算 xor 结果
    xor_result = xor(y_seq, x_all_matrix_gpu);
    
    % 查找满足条件的索引
    i = find(abs(n - 2 * sum(xor_result, 2)) > min_peak);

    % 计算相关性，仅对满足条件的索引进行计算
    correlation_results(i, :) = real(round(ifft(Y_FFTs_j .* conj(X_FFTs(i, :)), [], 2)));  % 使用单精度的逆 FFT（在GPU上执行）

    % 计算峰值和信号噪声比
    mfs(i) = (correlation_results(i, 1) .^ 2) ./ sum(correlation_results(i, 2:n) .^ 2, 2) / 2;

    % 返回最大峰值和对应索引
    [mfs_value, mfs_index] = max(mfs);
end